// Dierentuin.h

#ifndef DIERENTUIN_H
#define DIERENTUIN_H

#include <string>
#include <vector>
#include <map>
#include <iostream>

#include "Dier.h"
#include "Werknemer.h"
#include "Kooi.h"

using namespace std;

class Dierentuin {
private:
	/**
	 * naam van de dierentuin
	 */
	string		naam;
	/**
	 * dieren worden met een uniek nummer in een map opgeslagen
	 */
	map<int, Dier *> *		dieren;
	/**
	 * werknemers worden met een uniek nummer in een map opgeslagen
	 */
	map<int, Werknemer *> * werknemers;
	/**
	 * vector van vrijgekomen en weer beschikbare diernummers
	 */
	vector<int> *			beschikbareDierNummers;
	/**
	 * vector van vrijgekomen en weer beschikbare werknemernummers
	 */
	vector<int> *			beschikbareWerknemerNummers;
	/**
	 * hoogst uitgereikte diernummer
	 */
	int						hoogsteDierNummer;
	/**
	 * hoogst uitgereikte werknemernummer
	 */
	int						hoogsteWerknemerNummer;
	/**
	 * voor elke diersoort is er een kooi
	 */
	map <string,Kooi *> *	kooien;

	int						getNieuwDierNummer();
	int						getNieuwWerknemerNummer();
public:
	Dierentuin(string naam);
	~Dierentuin();
	string	getNaam();
	void	dierToevoegen();
	void	dierVerwijderen();
	void	werknemerToevoegen();
	void	werknemerVerwijderen();
	void	overzichtDieren();
	void	overzichtWerknemers();
};

#endif 
